/**
 * init-db.js - 数据库初始化脚本
 * 
 * 这个脚本用于初始化MySQL数据库。
 * 它创建数据库（如果不存在）并设置适当的字符集和排序规则。
 */

const mysql = require('mysql2/promise');
const logger = require('../src/utils/logger');

/**
 * 数据库配置
 */
const dbConfig = {
  host: 'localhost',
  port: 3306,
  user: 'admin',
  password: '123456',
};

/**
 * 初始化数据库
 */
async function initializeDatabase() {
  let connection;

  try {
    // 连接到MySQL服务器（不指定数据库）
    connection = await mysql.createConnection({
      host: dbConfig.host,
      port: dbConfig.port,
      user: dbConfig.user,
      password: dbConfig.password,
    });

    logger.info('已连接到MySQL服务器');

    // 创建数据库（如果不存在）
    await connection.query(`
      CREATE DATABASE IF NOT EXISTS api
      CHARACTER SET utf8mb4
      COLLATE utf8mb4_unicode_ci;
    `);

    logger.info('数据库"api"已创建或已存在');

    // 使用数据库
    await connection.query('USE api');

    logger.info('数据库初始化成功');
  } catch (error) {
    logger.error('数据库初始化失败:', error);
    throw error;
  } finally {
    if (connection) {
      await connection.end();
      logger.info('数据库连接已关闭');
    }
  }
}

// 如果直接运行此脚本，则执行初始化
if (require.main === module) {
  initializeDatabase()
    .then(() => {
      process.exit(0);
    })
    .catch((error) => {
      console.error('初始化失败:', error);
      process.exit(1);
    });
}

module.exports = initializeDatabase;